/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.gob.pnp.model;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import pe.gob.pnp.beans.SobrevivienteBean;
import pe.gob.pnp.factories.ConnectionPool;

/**
 *
 * @author gcarlos
 */
public class GestionSobreviviente {

    public List<SobrevivienteBean> obtenerSobrevivientes(String apenom, int npersidentificador) throws SQLException {
        List<SobrevivienteBean> lstSobreviviente = new ArrayList<SobrevivienteBean>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexionTramite();
            String sql = "SELECT  S.NSOBR_IDENTIFICADOR, S.CSOBR_APENOM,";
            sql += "TO_CHAR(S.DSOBR_FECHANACIMIENTO,'DD/MM/YYYY') AS DSOBR_FECHANACIMIENTO,";
            sql += " S.CSOBR_DOCUMENTOIDENTIDAD,P.CPARE_DESCRIPCION,";
            sql += " EC.CESCI_DESCRIPCION,CASE WHEN S.NSOBR_SEXO=1 THEN 'FEMENINO' ELSE 'MASCULINO' END AS CSOBR_SEXO";
            sql += " FROM TRAMDOC.PERMA_SOBREVIVIENTE S";
            sql += " INNER JOIN TRAMDOC.SISMA_RELACIONPARENTESCO RP";
            sql += " ON S.NSOBR_IDENTIFICADOR = RP.NSOBR_IDENTIFICADOR";
            sql += " INNER JOIN DIRPEN.GENMA_PARENTESCO P";
            sql += " ON P.NPARE_IDENTIFICADOR = RP.NTIPA_IDENTIFICADOR";
            sql += " INNER JOIN  TRAMDOC.GENMA_ESTADOCIVIL EC";
            sql += " ON EC.NESCI_IDENTIFICADOR = S.NESCI_IDENTIFICADOR";
            sql += " WHERE ";
            sql += " RP.NPERS_IDENTIFICADOR = ?";
            sql += " AND CSOBR_APENOM LIKE ?";
            sql += " ORDER BY S.CSOBR_APENOM";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, npersidentificador);
            ps.setString(2, "%" + apenom.toUpperCase() + "%");
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                SobrevivienteBean sobreviviente = new SobrevivienteBean();
                sobreviviente.setNsobrIdentificador(rs.getInt("NSOBR_IDENTIFICADOR"));
                sobreviviente.setCsobrApenom(rs.getString("CSOBR_APENOM"));
                sobreviviente.setDsobrFechanacimiento(rs.getString("DSOBR_FECHANACIMIENTO"));
                sobreviviente.setCsobrDocumentoIdentidad(rs.getString("CSOBR_DOCUMENTOIDENTIDAD"));
                sobreviviente.setCpareDescripcion(rs.getString("CPARE_DESCRIPCION"));
                sobreviviente.setCesciDescripcion(rs.getString("CESCI_DESCRIPCION"));
                sobreviviente.setCsobrSexo(rs.getString("CSOBR_SEXO"));
                lstSobreviviente.add(sobreviviente);
            }
            rs.close();
            ps.close();
        } catch (Exception err) {
            err.printStackTrace();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return lstSobreviviente;
    }
    
    
    public List<SobrevivienteBean> buscarSobrevivientesAdministrado(int npersidentificador) throws SQLException {
        List<SobrevivienteBean> lstSobreviviente = new ArrayList<SobrevivienteBean>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexionTramite();
            String sql = "SELECT  S.NSOBR_IDENTIFICADOR, S.CSOBR_APENOM,";
            sql += "TO_CHAR(S.DSOBR_FECHANACIMIENTO,'DD/MM/YYYY') AS DSOBR_FECHANACIMIENTO,";
            sql += " S.CSOBR_DOCUMENTOIDENTIDAD,P.CPARE_DESCRIPCION,";
            sql += " EC.CESCI_DESCRIPCION,CASE WHEN S.NSOBR_SEXO=1 THEN 'FEMENINO' ELSE 'MASCULINO' END AS CSOBR_SEXO";
            sql += " FROM TRAMDOC.PERMA_SOBREVIVIENTE S";
            sql += " INNER JOIN TRAMDOC.SISMA_RELACIONPARENTESCO RP";
            sql += " ON S.NSOBR_IDENTIFICADOR = RP.NSOBR_IDENTIFICADOR";
            sql += " INNER JOIN DIRPEN.GENMA_PARENTESCO P";
            sql += " ON P.NPARE_IDENTIFICADOR = RP.NTIPA_IDENTIFICADOR";
            sql += " INNER JOIN  TRAMDOC.GENMA_ESTADOCIVIL EC";
            sql += " ON EC.NESCI_IDENTIFICADOR = S.NESCI_IDENTIFICADOR";
            sql += " WHERE ";
            sql += " RP.NPERS_IDENTIFICADOR = ?";
            sql += " ORDER BY S.CSOBR_APENOM";
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, npersidentificador);
            ResultSet rs = ps.executeQuery();
            while (rs.next()) {
                SobrevivienteBean sobreviviente = new SobrevivienteBean();
                sobreviviente.setNsobrIdentificador(rs.getInt("NSOBR_IDENTIFICADOR"));
                sobreviviente.setCsobrApenom(rs.getString("CSOBR_APENOM"));
                sobreviviente.setDsobrFechanacimiento(rs.getString("DSOBR_FECHANACIMIENTO"));
                sobreviviente.setCsobrDocumentoIdentidad(rs.getString("CSOBR_DOCUMENTOIDENTIDAD"));
                sobreviviente.setCpareDescripcion(rs.getString("CPARE_DESCRIPCION"));
                sobreviviente.setCesciDescripcion(rs.getString("CESCI_DESCRIPCION"));
                sobreviviente.setCsobrSexo(rs.getString("CSOBR_SEXO"));
                lstSobreviviente.add(sobreviviente);
            }
            rs.close();
            ps.close();
        } catch (Exception err) {
            err.printStackTrace();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
        return lstSobreviviente;
    }
    
    
    public boolean mantenerSobreviviente(SobrevivienteBean sobreviviente,String operacion) throws SQLException {
        Connection conn = null;
        boolean exito = false;
        try {
            conn = ConnectionPool.obtenerConexionTramite();
            String sql = "{call TRAMDOC.SP_INICIAR_TRAMITEDOC(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
            CallableStatement cs = conn.prepareCall(sql);
         
            cs.execute();
            cs.close();
        } catch(Exception err){
            err.printStackTrace();
            exito = false;
        }finally {
            ConnectionPool.liberarConexion(conn);
        }
        return exito;
    }
}
